package leetcode_200;

/**
 *@author 周杨
 *ValidPalindrome_125  判断是否一个字符串是回文的 不考虑大小写 只考虑数字和字母的情况
 *describe:双指针遍历 AC 99%
 *2018年5月25日 下午7:29:54
 */
public class ValidPalindrome_125 {

	public static void main(String[] args) {
		ValidPalindrome_125 test=new ValidPalindrome_125();
		test.isPalindrome("A man, a plan, a canal: Panama");

	}
	
	public boolean isPalindrome(String s) {
        int i=0,j=s.length()-1;
        while(i<j) {
        	char c1=s.charAt(i);
        	char c2=s.charAt(j);
        	if(!((c1<='Z'&&c1>='A')||(c1<='z'&&c1>='a')||(c1<='9'&&c1>='0'))) {
        		++i;
        		continue;
        	}
        	if(!((c2<='Z'&&c2>='A')||(c2<='z'&&c2>='a')||(c2<='9'&&c2>='0'))) {
        		--j;
        		continue;
        	}
        	if(c1!=c2) {
        		if((c1<='9'&&c1>='0')||(c2<='9'&&c2>='0'))
        			return false;
        		if(Math.abs(c1-c2)!=32)
        		return false;
        	}
        	++i;
        	--j;
        }
        return true;
    }

}
